#!/bin/bash

# SSL 配置修复脚本
# 用于解决 ERR_SSL_PROTOCOL_ERROR 和 SSL handshake 失败问题

set -e

echo "开始修复 SSL 配置..."

# 检查是否为 root 用户
if [ "$EUID" -ne 0 ]; then
    echo "请使用 root 权限运行此脚本"
    exit 1
fi

# 创建 SSL 目录
echo "创建 SSL 目录..."
mkdir -p /etc/nginx/ssl

# 生成 DH 参数文件（如果不存在）
if [ ! -f "/etc/nginx/ssl/dhparam.pem" ]; then
    echo "生成 DH 参数文件（这可能需要几分钟）..."
    openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
    echo "DH 参数文件生成完成"
else
    echo "DH 参数文件已存在"
fi

# 检查 Let's Encrypt 证书
if [ -f "/etc/letsencrypt/live/wmxy.1314du.com/fullchain.pem" ]; then
    echo "发现 Let's Encrypt 证书，创建符号链接..."
    ln -sf /etc/letsencrypt/live/wmxy.1314du.com/fullchain.pem /etc/nginx/ssl/your-domain.crt
    ln -sf /etc/letsencrypt/live/wmxy.1314du.com/privkey.pem /etc/nginx/ssl/your-domain.key
    echo "证书链接创建完成"
else
    echo "警告：未找到 Let's Encrypt 证书，请检查证书路径"
fi

# 设置正确的权限
echo "设置 SSL 文件权限..."
chmod 644 /etc/nginx/ssl/*.crt 2>/dev/null || true
chmod 600 /etc/nginx/ssl/*.key 2>/dev/null || true
chmod 644 /etc/nginx/ssl/dhparam.pem 2>/dev/null || true
chown -R root:root /etc/nginx/ssl/

# 测试 Nginx 配置
echo "测试 Nginx 配置..."
nginx -t

if [ $? -eq 0 ]; then
    echo "Nginx 配置测试通过"
    echo "重新加载 Nginx..."
    systemctl reload nginx
    echo "SSL 配置修复完成！"
else
    echo "Nginx 配置测试失败，请检查配置文件"
    exit 1
fi

echo "建议运行以下命令检查服务状态："
echo "systemctl status nginx"
echo "systemctl status your-app-service"
echo "tail -f /var/log/nginx/error.log"